#pragma once

#include "ADMaterial.h"

// Forward Declarations
class TablePyrolysisGasADMaterial : public ADMaterial
{
public:
	static InputParameters validParams();

	TablePyrolysisGasADMaterial(const InputParameters& parameters);

protected:
	virtual void computeQpProperties();
	virtual void initQpStatefulProperties();
private:
	//coupled virialbles

	const VariableValue& _temperature;
	const VariableValue& _porepressure;
	// compute gas density
	ADMaterialProperty<Real>& _rhog;
	//compute gas viscosity
	ADMaterialProperty<Real>& _viscosity;
	//compute gas enthalpy
	ADMaterialProperty<Real>& _gas_enthalpy;

	LinearInterpolation  _func_rhog_T;
	LinearInterpolation  _func_viscosity_T;
	LinearInterpolation  _func_hg_T;

	std::vector<Real>  _rhog_list; //to get list of gas density
	std::vector<Real>  _rhogT_list; //to get T list of gas density
	std::vector<Real>  _viscosity_list; //to get list of viscosity
	std::vector<Real>  _viscosityT_list; //to get T list of viscosity
	std::vector<Real>  _hg_list; //to get list of enthalpy
	std::vector<Real>  _hgT_list;//to get T list of enthalpy

};